package com.suning.sawp.intf.promotion;

import java.util.List;

import org.apache.poi.ss.usermodel.Workbook;

import com.suning.sawp.dto.common.QueryResult;
import com.suning.sawp.dto.common.ReturnMsg;
import com.suning.sawp.dto.precharge.CommonRtn;
import com.suning.sawp.dto.promotion.CheckRegisterRtn;
import com.suning.sawp.dto.promotion.CouponRecordStatisRtn;
import com.suning.sawp.dto.promotion.InnerCouponBlackList;
import com.suning.sawp.dto.promotion.InnerCouponDetail;
import com.suning.sawp.dto.promotion.InnerCouponRecordRtn;
import com.suning.sawp.dto.promotion.InnerRemain;
import com.suning.sawp.dto.promotion.QueryStaffName;

/**
 * 
 * 内部优惠券接口<br> 
 * 〈功能详细描述〉
 *
 * @author Wuxiao
 * @see [相关类/方法]（可选）
 * @since [产品/模块版本] （可选）
 */
public interface InnerCouponService {

    /**
     * 
     * 功能描述: 查询内部券列表<br>
     * 〈功能详细描述〉
     *
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    ReturnMsg<List<InnerCouponDetail>> queryCouponList(String staffId);
    
    /**
     * 
     * 根据staffId和trigerId 查询内部券列表
     *
     * @param staffId
     * @param trigerId
     * @return
     */
    public ReturnMsg<List<InnerCouponDetail>> queryCouponListByStaffIdAndTrigerId(String staffId,String trigerId);
    /**
     * 
     * 功能描述: 查询当月已发次数，剩余次数<br>
     * 〈功能详细描述〉
     *
     * @param staffId
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    ReturnMsg<InnerRemain> queryRemainTimes(String staffId);
    /**
     * 
     * 功能描述: 检查是否是易购会员<br>
     * 〈功能详细描述〉
     *
     * @param mobile
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    ReturnMsg<CheckRegisterRtn> checkRegister(String mobile,String staffId);
    /**
     * 
     * 功能描述: 发券<br>
     * 〈功能详细描述〉
     *
     * @param mobile
     * @param activityId
     * @param securityKey
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    ReturnMsg<CommonRtn> sendCoupon(String mobile,String activityId,String activityName,String securityKey,String staffId);
   
    /**
     * 发券，时光机功能调用
     *
     * @param mobile 易购账号
     * @param activityId 活动id
     * @param activityName 活动名称
     * @param securityKey key
     * @param staffId 员工工号
     * @param trigerId 事件号
     * @return
     */
	public ReturnMsg<CommonRtn> sendCoupon4TM(String mobile, String activityId, String securityKey, String staffId, String trigerId);
    
    /**
     * 
     * 功能描述: 查询发券记录<br>
     * 〈功能详细描述〉
     *
     * @param staffId
     * @param pageSize
     * @param pageNo
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    ReturnMsg<InnerCouponRecordRtn> queryCouponRecord(String staffId,Integer pageSize,Integer pageNo);
    /**
     * 
     * 功能描述: 查询黑名单列表<br>
     * 〈功能详细描述〉
     *
     * @param staffId
     * @param pageNo
     * @param pageSize
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    ReturnMsg<QueryResult<InnerCouponBlackList>> queryBlackList(String staffId,Integer pageNo,Integer pageSize);
    /**
     * 
     * 功能描述:新增黑名单 <br>
     * 〈功能详细描述〉
     *
     * @param staffId
     * @param staffName
     * @param reason
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    ReturnMsg<CommonRtn> addBlack(String staffId,String staffName,String reason);
    /**
     * 
     * 功能描述: 删除黑名单<br>
     * 〈功能详细描述〉
     *
     * @param staffId
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    ReturnMsg<CommonRtn> delBlack(String staffId);
    /**
     * 
     * 功能描述: 根据工号查询姓名<br>
     * 〈功能详细描述〉
     *
     * @param staffId
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    ReturnMsg<QueryStaffName> queryStaffName(String staffId);
    /**
     * 
     * 功能描述: 内部券发券记录统计<br>
     * 〈功能详细描述〉
     *
     * @param staffId
     * @param startTime
     * @param endTime
     * @param pageSize
     * @param pageNo
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    ReturnMsg<CouponRecordStatisRtn> queryRecord(String staffId,String startTime,String endTime,Integer pageSize,Integer pageNo);
    /**
     * 
     * 功能描述: 导出发券明细<br>
     * 〈功能详细描述〉
     *
     * @param staffId
     * @param startTime
     * @param endTime
     * @param index
     * @param limit
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    Workbook exportCouponRecord(String staffId,String startTime,String endTime,Integer index);
    
    /**
     * 
     * 功能描述: 工号是否处于黑名单中<br>
     * 〈功能详细描述〉
     *
     * @param staffId
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    boolean isBlackList(String staffId);
}
